#pragma once

#include <map>
#include "HashedString.h"
#include "Uniform.h"
#include "Attribute.h"

class Shader
{
public:
	enum Type
	{
		FragmentShader = 0x8B30,
		VertexShader = 0x8B31,
	};
	
	typedef std::map<HashedString, Shader> Map_t;
	typedef std::pair<HashedString, Shader> Pair_t;
	typedef std::map<HashedString, Uniform::Map_t> UniformMap_t;
	typedef std::map<HashedString, Attribute::Map_t> AttributeMap_t;

	unsigned int m_shaderID;
	Uniform::Map_t m_uniforms;
	IUniformInstruction::Map_t m_uniformInstructions;
	Attribute::Map_t m_attributes;
};